#ifndef AGENT_CORE_H
#define AGENT_CORE_H

#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

// Economic agent types
typedef enum {
    CONSUMER,
    PRODUCER,
    INVESTOR,
    GOVERNMENT
} AgentType;

// Agent base structure
typedef struct {
    int id;
    AgentType type;
    double wealth;
    double consumption;
    double production;
} EconomicAgent;

// Market environment
typedef struct {
    double priceLevel;
    double inflationRate;
    double interestRate;
} MarketConditions;

// Agent-based modeling functions
EconomicAgent* createAgents(int count, AgentType type);
void simulateAgentBehavior(EconomicAgent* agents, int count, const MarketConditions* market);
void freeAgents(EconomicAgent* agents);

// Complex economic simulations
void runMarketSimulation(int cycles, EconomicAgent* consumers, int consumerCount,
                        EconomicAgent* producers, int producerCount,
                        MarketConditions* market);

#ifdef __cplusplus
}
#endif

#endif // AGENT_CORE_H